package com.dhcc.DRGsHosp.facade;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.openkoala.koala.commons.InvokeResult;

import com.dhcc.DRGsHosp.core.domain.MrAppendPage;
import com.dhcc.DRGsHosp.core.domain.MrBaseInfo;
import com.dhcc.DRGsHosp.core.domain.MrDiagnose;
import com.dhcc.DRGsHosp.core.domain.MrIpInfo;
import com.dhcc.DRGsHosp.core.domain.MrOperation;
import com.dhcc.DRGsHosp.facade.dto.ManageSummaryDTO;

/**
 * @title		:FileUploadFacade.java
 * @description	:
 * @author		:liqingyang
 * @date		:2015年5月19日
 * @version     :1.0
 * @copyright   :DHCC 2013-2014 
 */
public interface FileUploadFacade {
	/**
	 * 
	 * @methodname    :importMedicalRecord
	 * @description   :导入首页基础数据
	 * @param         :
	 * @author        :WangTeng
	 * @param context 
	 * @return        :
	 * @date          :2015年5月25日
	 */
    public InvokeResult importMedicalRecord(String filePath, String context,int cur,int all);
    
    /**
	 * 
	 * @methodname    :importDRGs
	 * @description   :导入DRGs基础数据
	 * @param         :
	 * @author        :WangTeng
	 * @return        :
	 * @date          :2015年5月25日
	 */
    public InvokeResult importDRGs(String filePath);
    
    /**
	 * 
	 * @methodname    :importHCData
	 * @description   :导入医保数据
	 * @param         :
	 * @author        :WangTeng
     * @param user_guid 
	 * @return        :
	 * @date          :2015年5月25日
	 */
    public InvokeResult importHCData(String filePath,int cur,int all, String user_guid);
    

    /**
	 * 
	 * @methodname    :getNoDataDay
	 * @description   :查询日监测表中，没有数据的日期（当前日期起，3个月内）,并反馈给前台提示。注意，补录数据时会重新取一次日期。
	 * @param         :
	 * @author        :WangTeng
	 * @return        :
	 * @date          :2015年5月27日
	 */
    public InvokeResult getNoDataDay(String hospCode);
    
    /**
	 * @methodname    :getProgress
	 * @description   :获取执行进度
	 * @param         :
	 * @author        :WangTeng
	 * @return        :
	 * @date          :2015年1月27日
	 */
	public void getProgress(HttpServletResponse response);
	
	/**
	 * 
	 * @methodname    :requestProgress
	 * @description   : 请求执行进度
	 * @param         :
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2016年6月3日
	 */
	public Map<String,Object> requestProgress();
	
	
	/**
	 * 
	 * @methodname    :judgeManage
	 * @description   : 判断当前标杆是否已经导入
	 * @param         :
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2016年10月13日
	 */
	public InvokeResult judgeManage(ManageSummaryDTO dto);
	
	/**
	 * 
	 * @methodname    :getProcess
	 * @description   : 获取进度
	 * @param         :
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2016年10月13日
	 */
	public InvokeResult getProcess();
	/**
	 * 
	 *  operDictMap.  
	 *  @Description：基本信息字典 处理
	 *  @Author mazhaoyan
	 *  @param mrOper
	 *  @param dictData 
	 *  @Date:2018年2月12日上午11:15:40
	 */
	public void baseDictMap(MrBaseInfo mrBaseInfo,Map<String,Object> dictData);
	
	/**
	 * 
	 *  operDictMap.  
	 *  @Description：住院信息字典 处理
	 *  @Author mazhaoyan
	 *  @param mrOper
	 *  @param dictData 
	 *  @Date:2018年2月12日上午11:15:40
	 */
	public void ipDictMap(MrIpInfo mrIpInfo,Map<String,Object> dictData);
	
	/**
	 * 
	 *  operDictMap.  
	 *  @Description：手术字典 处理
	 *  @Author mazhaoyan
	 *  @param mrOper
	 *  @param dictData 
	 *  @Date:2018年2月12日上午11:15:40
	 */
	public void operDictMap(MrOperation mrOper,Map<String,Object> dictData);
	/**
	 * 
	 *  parseDepDoc.  
	 *  @Description：处理科室 病区 医师的公共方法
	 *  @Author mazhaoyan
	 *  @param ipInfo
	 *  @throws Exception 
	 *  @Date:2018年1月30日下午8:57:25
	 */
	public void parseDepDoc(MrBaseInfo baseInfo,MrIpInfo ipInfo,Map<String,Object> initMap) throws Exception;
	/**
	 * 
	 *  parseOperDoc.  
	 *  @Description：手术医师的代码处理
	 *  @Author mazhaoyan
	 *  @param depCode
	 *  @param wardCode
	 *  @throws Exception 
	 *  @Date:2018年2月8日上午9:23:50
	 */
	public void parseOperDoc(Map<String,Object> initMap,MrOperation operInfo) throws Exception;
	/**
	 * 
	 *  assembleAndGroup.  
	 *  @Description：组装数据病分组
	 *  @Author mazhaoyan
	 *  @param baseInfo
	 *  @param ipInfo
	 *  @param appendInfo
	 *  @param tmpDiagList
	 *  @param tmpOperList
	 *  @param initMap 
	 *  @Date:2018年1月30日下午9:02:47
	 */
	public void assembleAndGroup(MrBaseInfo baseInfo,MrIpInfo ipInfo,MrAppendPage appendInfo,List<MrDiagnose> tmpDiagList,List<MrOperation> tmpOperList,Map<String,Object> initMap); 
	
	/**
	 * 
	 *  assembleAndGroup.  
	 *  @Description：组装数据病分组
	 *  @Author mazhaoyan
	 *  @param caseMap
	 *  @param initMap 
	 *  @Date:2018年4月3日下午7:57:51
	 */
	public void assembleAndGroup(Map<String,Object> caseMap,Map<String,Object> initMap); 
	
	/**
	 *  费用子项导入
	 *  costSubImport.  
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @param filePath
	 *  @return 
	 *  @Date:2018年3月15日上午11:33:59
	 */
	public InvokeResult costSubImport(String filePath);
	
	/**
	 *  医师信息导入
	 *  doctorInfoImport.  
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @param filePath
	 *  @return 
	 *  @Date:2018年3月15日下午4:30:17
	 */
	public InvokeResult doctorInfoImport(String filePath);
	
	/**
	 *  病区导入
	 *  wardImport.  
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @param filePath
	 *  @return 
	 *  @Date:2018年3月15日下午4:30:17
	 */
	public InvokeResult wardImport(String filePath);
	/**
	 * 
	 *  parseRowData.  
	 *  @Description：
	 *  @Author mazhaoyan
	 *  @param rowData
	 *  @param initMap
	 *  @return 
	 *  @Date:2018年4月4日上午10:18:05
	 */
	public Map<String,Object> parseRowData(Object[] rowData,Map<String,Object>initMap);
	/**
	 * 
	 * @Title: getAbnomalGroupCase  
	 * @Description:分组异常数据系统导出 
	 * @param @param mrNumber
	 * @param @return   
	 * @return InvokeResult  
	 * @author shaozhiyuan
	 * @date 2018年5月16日  
	 * @version V3.1.0 
	 * @throws
	 */
	public Map<String,Object> getAbnomalGroupCase(String mrNumber);

	/**
	 * @Description: 处理编码
	 * @param
	 * @return
	 * @throws
	 * @author chenhanlin
	 * @date 2018/9/20 14:28
	 */
	public Map<String,String>  processCodeAndDesc(Map<String,String> mapObj,Map<String,Object> codeMap,Map<String,Object> descMap,String monitorType) throws Exception ;
	
	/**
	 * 
	 *  @Description：更新ipinfo表的标识位(长庚个性化需求）
	 *  @Author fulianxia
	 *  @param datefrom
	 *  @param dateto
	 *  @return
	 *  @Date:2018年3月23日
	 */
	public InvokeResult saveConfirmFlag(String datefrom, String dateto);
}
